package org.example.dao;


import org.example.entity.Customer;
import org.example.utils.HibernateUtils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;


public class UtilsTest {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void save(Customer customer){

        //内部获取 Session 对象
        //获取和当前线程绑定的 Session 对象
        //1. 不须要从外部传入 Session 对象
        //2. 多个 DAO 方法也能够使用一个事务!
        Session session = HibernateUtils.getInstance().getSession();
        System.out.println(session.hashCode());
        session.save(customer);
    }

    /**
     * 若须要传入一个 Session 对象, 则意味着上一层(Service)须要获取到 Session 对象.
     * 这说明上一层须要和 Hibernate 的 API 紧密耦合. 所以不推荐使用此种方式.
     */
    public void save(Session session, Customer customer){
        session.save(customer);
    }

}
